﻿using System;
using System.ComponentModel;
using System.Reflection;
using System.Runtime.InteropServices;
using Teigha.Core;

namespace Teigha.TD
{
	public class OdDbSubentityOverrule : OdRxOverrule
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public OdDbSubentityOverrule(IntPtr cPtr, bool cMemoryOwn) : base(TD_DbPINVOKE.OdDbSubentityOverrule_SWIGUpcast(cPtr), cMemoryOwn)
		{
			this.swigCPtr = new HandleRef(this, cPtr);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public static HandleRef getCPtr(OdDbSubentityOverrule obj)
		{
			if (obj != null)
			{
				return obj.swigCPtr;
			}
			return new HandleRef(null, IntPtr.Zero);
		}

		~OdDbSubentityOverrule()
		{
			this.Dispose();
		}

		public override void Dispose()
		{
			if (this.swigCPtr.Handle != IntPtr.Zero)
			{
				if (this.swigCMemOwn)
				{
					lock (this.locker)
					{
						if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
						{
							this.swigCMemOwn = false;
							TD_DbPINVOKE.delete_OdDbSubentityOverrule(this.swigCPtr);
						}
					}
					this.swigCMemOwn = false;
				}
				this.swigCPtr = new HandleRef(null, IntPtr.Zero);
			}
			GC.SuppressFinalize(this);
			base.Dispose();
		}

		public OdDbSubentityOverrule() : this(TD_DbPINVOKE.new_OdDbSubentityOverrule(), MemoryManager.GetMemoryManager().GetCurrentTransaction() == null)
		{
			MemoryTransaction currentTransaction = MemoryManager.GetMemoryManager().GetCurrentTransaction();
			if (currentTransaction != null)
			{
				currentTransaction.AddObject(new OdDbSubentityOverrule(this.swigCPtr.Handle, true));
			}
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			this.SwigDirectorConnect();
		}

		public new static OdDbSubentityOverrule cast(OdRxObject pObj)
		{
			MemoryManager memoryManager = MemoryManager.GetMemoryManager();
			MemoryTransaction currentTransaction = memoryManager.GetCurrentTransaction();
			IntPtr p = TD_DbPINVOKE.OdDbSubentityOverrule_cast(OdRxObject.getCPtr(pObj));
			OdDbSubentityOverrule result;
			if (currentTransaction != null)
			{
				currentTransaction.AddObject((OdDbSubentityOverrule)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true));
				result = (OdDbSubentityOverrule)Teigha.Core.Helpers.odrxCreateObjectInternal(p, false);
			}
			else
			{
				result = (OdDbSubentityOverrule)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true);
			}
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new static OdRxClass desc()
		{
			OdRxClass result = (OdRxClass)Teigha.Core.Helpers.odrxCreateObjectInternal(TD_DbPINVOKE.OdDbSubentityOverrule_desc(), false);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual OdRxClass isA()
		{
			OdRxClass result = (OdRxClass)Teigha.Core.Helpers.odrxCreateObjectInternal(this.SwigDerivedClassHasMethod("isA", OdDbSubentityOverrule.swigMethodTypes1) ? TD_DbPINVOKE.OdDbSubentityOverrule_isASwigExplicitOdDbSubentityOverrule(this.swigCPtr) : TD_DbPINVOKE.OdDbSubentityOverrule_isA(this.swigCPtr), false);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual OdRxObject queryX(OdRxClass protocolClass)
		{
			OdRxObject result = Teigha.Core.Helpers.odrxCreateObjectInternal(this.SwigDerivedClassHasMethod("queryX", OdDbSubentityOverrule.swigMethodTypes0) ? TD_DbPINVOKE.OdDbSubentityOverrule_queryXSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdRxClass.getCPtr(protocolClass)) : TD_DbPINVOKE.OdDbSubentityOverrule_queryX(this.swigCPtr, OdRxClass.getCPtr(protocolClass)), false);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new static OdDbSubentityOverrule createObject()
		{
			MemoryManager memoryManager = MemoryManager.GetMemoryManager();
			MemoryTransaction currentTransaction = memoryManager.GetCurrentTransaction();
			IntPtr p = TD_DbPINVOKE.OdDbSubentityOverrule_createObject();
			OdDbSubentityOverrule result;
			if (currentTransaction != null)
			{
				currentTransaction.AddObject((OdDbSubentityOverrule)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true));
				result = (OdDbSubentityOverrule)Teigha.Core.Helpers.odrxCreateObjectInternal(p, false);
			}
			else
			{
				result = (OdDbSubentityOverrule)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true);
			}
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult deleteSubentPaths(OdDbEntity pSubject, OdDbFullSubentPathArray paths)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("deleteSubentPaths", OdDbSubentityOverrule.swigMethodTypes3) ? TD_DbPINVOKE.OdDbSubentityOverrule_deleteSubentPathsSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPathArray.getCPtr(paths)) : TD_DbPINVOKE.OdDbSubentityOverrule_deleteSubentPaths(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPathArray.getCPtr(paths)));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult addSubentPaths(OdDbEntity pSubject, OdDbFullSubentPathArray paths)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("addSubentPaths", OdDbSubentityOverrule.swigMethodTypes4) ? TD_DbPINVOKE.OdDbSubentityOverrule_addSubentPathsSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPathArray.getCPtr(paths)) : TD_DbPINVOKE.OdDbSubentityOverrule_addSubentPaths(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPathArray.getCPtr(paths)));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult transformSubentPathsBy(OdDbEntity pSubject, OdDbFullSubentPathArray paths, OdGeMatrix3d xform)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("transformSubentPathsBy", OdDbSubentityOverrule.swigMethodTypes5) ? TD_DbPINVOKE.OdDbSubentityOverrule_transformSubentPathsBySwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPathArray.getCPtr(paths), OdGeMatrix3d.getCPtr(xform)) : TD_DbPINVOKE.OdDbSubentityOverrule_transformSubentPathsBy(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPathArray.getCPtr(paths), OdGeMatrix3d.getCPtr(xform)));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult getGripPointsAtSubentPath(OdDbEntity pSubject, OdDbFullSubentPath path, OdDbGripDataPtrArray grips, double curViewUnitSize, int gripSize, OdGeVector3d curViewDir, uint bitflags)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("getGripPointsAtSubentPath", OdDbSubentityOverrule.swigMethodTypes6) ? TD_DbPINVOKE.OdDbSubentityOverrule_getGripPointsAtSubentPathSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(path), OdDbGripDataPtrArray.getCPtr(grips), curViewUnitSize, gripSize, OdGeVector3d.getCPtr(curViewDir), bitflags) : TD_DbPINVOKE.OdDbSubentityOverrule_getGripPointsAtSubentPath(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(path), OdDbGripDataPtrArray.getCPtr(grips), curViewUnitSize, gripSize, OdGeVector3d.getCPtr(curViewDir), bitflags));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult moveGripPointsAtSubentPaths(OdDbEntity pSubject, OdDbFullSubentPathArray paths, OdDbVoidPtrArray gripAppData, OdGeVector3d offset, uint bitflags)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("moveGripPointsAtSubentPaths", OdDbSubentityOverrule.swigMethodTypes7) ? TD_DbPINVOKE.OdDbSubentityOverrule_moveGripPointsAtSubentPathsSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPathArray.getCPtr(paths), OdDbVoidPtrArray.getCPtr(gripAppData), OdGeVector3d.getCPtr(offset), bitflags) : TD_DbPINVOKE.OdDbSubentityOverrule_moveGripPointsAtSubentPaths(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPathArray.getCPtr(paths), OdDbVoidPtrArray.getCPtr(gripAppData), OdGeVector3d.getCPtr(offset), bitflags));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult getSubentPathsAtGsMarker(OdDbEntity pSubject, SubentType type, IntPtr gsMark, OdGePoint3d pickPoint, OdGeMatrix3d viewXform, OdDbFullSubentPathArray subentPaths, OdDbObjectIdArray pEntAndInsertStack)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("getSubentPathsAtGsMarker", OdDbSubentityOverrule.swigMethodTypes8) ? TD_DbPINVOKE.OdDbSubentityOverrule_getSubentPathsAtGsMarkerSwigExplicitOdDbSubentityOverrule__SWIG_0(this.swigCPtr, OdDbEntity.getCPtr(pSubject), (int)type, gsMark, OdGePoint3d.getCPtr(pickPoint), OdGeMatrix3d.getCPtr(viewXform), OdDbFullSubentPathArray.getCPtr(subentPaths), OdDbObjectIdArray.getCPtr(pEntAndInsertStack)) : TD_DbPINVOKE.OdDbSubentityOverrule_getSubentPathsAtGsMarker__SWIG_0(this.swigCPtr, OdDbEntity.getCPtr(pSubject), (int)type, gsMark, OdGePoint3d.getCPtr(pickPoint), OdGeMatrix3d.getCPtr(viewXform), OdDbFullSubentPathArray.getCPtr(subentPaths), OdDbObjectIdArray.getCPtr(pEntAndInsertStack)));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult getSubentPathsAtGsMarker(OdDbEntity pSubject, SubentType type, IntPtr gsMark, OdGePoint3d pickPoint, OdGeMatrix3d viewXform, OdDbFullSubentPathArray subentPaths)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("getSubentPathsAtGsMarker", OdDbSubentityOverrule.swigMethodTypes9) ? TD_DbPINVOKE.OdDbSubentityOverrule_getSubentPathsAtGsMarkerSwigExplicitOdDbSubentityOverrule__SWIG_1(this.swigCPtr, OdDbEntity.getCPtr(pSubject), (int)type, gsMark, OdGePoint3d.getCPtr(pickPoint), OdGeMatrix3d.getCPtr(viewXform), OdDbFullSubentPathArray.getCPtr(subentPaths)) : TD_DbPINVOKE.OdDbSubentityOverrule_getSubentPathsAtGsMarker__SWIG_1(this.swigCPtr, OdDbEntity.getCPtr(pSubject), (int)type, gsMark, OdGePoint3d.getCPtr(pickPoint), OdGeMatrix3d.getCPtr(viewXform), OdDbFullSubentPathArray.getCPtr(subentPaths)));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult getGsMarkersAtSubentPath(OdDbEntity pSubject, OdDbFullSubentPath subPath, SWIGTYPE_p_OdGsMarkerArray gsMarkers)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("getGsMarkersAtSubentPath", OdDbSubentityOverrule.swigMethodTypes10) ? TD_DbPINVOKE.OdDbSubentityOverrule_getGsMarkersAtSubentPathSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(subPath), SWIGTYPE_p_OdGsMarkerArray.getCPtr(gsMarkers)) : TD_DbPINVOKE.OdDbSubentityOverrule_getGsMarkersAtSubentPath(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(subPath), SWIGTYPE_p_OdGsMarkerArray.getCPtr(gsMarkers)));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdDbEntity subentPtr(OdDbEntity pSubject, OdDbFullSubentPath id)
		{
			MemoryManager memoryManager = MemoryManager.GetMemoryManager();
			MemoryTransaction currentTransaction = memoryManager.GetCurrentTransaction();
			IntPtr p = this.SwigDerivedClassHasMethod("subentPtr", OdDbSubentityOverrule.swigMethodTypes11) ? TD_DbPINVOKE.OdDbSubentityOverrule_subentPtrSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(id)) : TD_DbPINVOKE.OdDbSubentityOverrule_subentPtr(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(id));
			OdDbEntity result;
			if (currentTransaction != null)
			{
				currentTransaction.AddObject((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true));
				result = (OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(p, false);
			}
			else
			{
				result = (OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true);
			}
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult getCompoundObjectTransform(OdDbEntity pSubject, OdGeMatrix3d xMat)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("getCompoundObjectTransform", OdDbSubentityOverrule.swigMethodTypes12) ? TD_DbPINVOKE.OdDbSubentityOverrule_getCompoundObjectTransformSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdGeMatrix3d.getCPtr(xMat)) : TD_DbPINVOKE.OdDbSubentityOverrule_getCompoundObjectTransform(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdGeMatrix3d.getCPtr(xMat)));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdResult getSubentPathGeomExtents(OdDbEntity pSubject, OdDbFullSubentPath path, OdGeExtents3d extents)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("getSubentPathGeomExtents", OdDbSubentityOverrule.swigMethodTypes13) ? TD_DbPINVOKE.OdDbSubentityOverrule_getSubentPathGeomExtentsSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(path), OdGeExtents3d.getCPtr(extents)) : TD_DbPINVOKE.OdDbSubentityOverrule_getSubentPathGeomExtents(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(path), OdGeExtents3d.getCPtr(extents)));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void subentGripStatus(OdDbEntity pSubject, GripStat status, OdDbFullSubentPath subentity)
		{
			if (this.SwigDerivedClassHasMethod("subentGripStatus", OdDbSubentityOverrule.swigMethodTypes14))
			{
				TD_DbPINVOKE.OdDbSubentityOverrule_subentGripStatusSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), (int)status, OdDbFullSubentPath.getCPtr(subentity));
			}
			else
			{
				TD_DbPINVOKE.OdDbSubentityOverrule_subentGripStatus(this.swigCPtr, OdDbEntity.getCPtr(pSubject), (int)status, OdDbFullSubentPath.getCPtr(subentity));
			}
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual OdResult getSubentClassId(OdDbEntity pSubject, OdDbFullSubentPath path, IntPtr clsId)
		{
			OdResult result = (OdResult)(this.SwigDerivedClassHasMethod("getSubentClassId", OdDbSubentityOverrule.swigMethodTypes15) ? TD_DbPINVOKE.OdDbSubentityOverrule_getSubentClassIdSwigExplicitOdDbSubentityOverrule(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(path), clsId) : TD_DbPINVOKE.OdDbSubentityOverrule_getSubentClassId(this.swigCPtr, OdDbEntity.getCPtr(pSubject), OdDbFullSubentPath.getCPtr(path), clsId));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		private void SwigDirectorConnect()
		{
			if (this.SwigDerivedClassHasMethod("queryX", OdDbSubentityOverrule.swigMethodTypes0))
			{
				this.swigDelegate0 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_0(this.SwigDirectorqueryX);
			}
			if (this.SwigDerivedClassHasMethod("isA", OdDbSubentityOverrule.swigMethodTypes1))
			{
				this.swigDelegate1 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_1(this.SwigDirectorisA);
			}
			if (this.SwigDerivedClassHasMethod("isApplicable", OdDbSubentityOverrule.swigMethodTypes2))
			{
				this.swigDelegate2 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_2(this.SwigDirectorisApplicable);
			}
			if (this.SwigDerivedClassHasMethod("deleteSubentPaths", OdDbSubentityOverrule.swigMethodTypes3))
			{
				this.swigDelegate3 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_3(this.SwigDirectordeleteSubentPaths);
			}
			if (this.SwigDerivedClassHasMethod("addSubentPaths", OdDbSubentityOverrule.swigMethodTypes4))
			{
				this.swigDelegate4 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_4(this.SwigDirectoraddSubentPaths);
			}
			if (this.SwigDerivedClassHasMethod("transformSubentPathsBy", OdDbSubentityOverrule.swigMethodTypes5))
			{
				this.swigDelegate5 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_5(this.SwigDirectortransformSubentPathsBy);
			}
			if (this.SwigDerivedClassHasMethod("getGripPointsAtSubentPath", OdDbSubentityOverrule.swigMethodTypes6))
			{
				this.swigDelegate6 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_6(this.SwigDirectorgetGripPointsAtSubentPath);
			}
			if (this.SwigDerivedClassHasMethod("moveGripPointsAtSubentPaths", OdDbSubentityOverrule.swigMethodTypes7))
			{
				this.swigDelegate7 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_7(this.SwigDirectormoveGripPointsAtSubentPaths);
			}
			if (this.SwigDerivedClassHasMethod("getSubentPathsAtGsMarker", OdDbSubentityOverrule.swigMethodTypes8))
			{
				this.swigDelegate8 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_8(this.SwigDirectorgetSubentPathsAtGsMarker__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("getSubentPathsAtGsMarker", OdDbSubentityOverrule.swigMethodTypes9))
			{
				this.swigDelegate9 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_9(this.SwigDirectorgetSubentPathsAtGsMarker__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("getGsMarkersAtSubentPath", OdDbSubentityOverrule.swigMethodTypes10))
			{
				this.swigDelegate10 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_10(this.SwigDirectorgetGsMarkersAtSubentPath);
			}
			if (this.SwigDerivedClassHasMethod("subentPtr", OdDbSubentityOverrule.swigMethodTypes11))
			{
				this.swigDelegate11 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_11(this.SwigDirectorsubentPtr);
			}
			if (this.SwigDerivedClassHasMethod("getCompoundObjectTransform", OdDbSubentityOverrule.swigMethodTypes12))
			{
				this.swigDelegate12 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_12(this.SwigDirectorgetCompoundObjectTransform);
			}
			if (this.SwigDerivedClassHasMethod("getSubentPathGeomExtents", OdDbSubentityOverrule.swigMethodTypes13))
			{
				this.swigDelegate13 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_13(this.SwigDirectorgetSubentPathGeomExtents);
			}
			if (this.SwigDerivedClassHasMethod("subentGripStatus", OdDbSubentityOverrule.swigMethodTypes14))
			{
				this.swigDelegate14 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_14(this.SwigDirectorsubentGripStatus);
			}
			if (this.SwigDerivedClassHasMethod("getSubentClassId", OdDbSubentityOverrule.swigMethodTypes15))
			{
				this.swigDelegate15 = new OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_15(this.SwigDirectorgetSubentClassId);
			}
			TD_DbPINVOKE.OdDbSubentityOverrule_director_connect(this.swigCPtr, this.swigDelegate0, this.swigDelegate1, this.swigDelegate2, this.swigDelegate3, this.swigDelegate4, this.swigDelegate5, this.swigDelegate6, this.swigDelegate7, this.swigDelegate8, this.swigDelegate9, this.swigDelegate10, this.swigDelegate11, this.swigDelegate12, this.swigDelegate13, this.swigDelegate14, this.swigDelegate15);
		}

		private bool SwigDerivedClassHasMethod(string methodName, Type[] methodTypes)
		{
			MethodInfo method = base.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, methodTypes, null);
			return method.DeclaringType.IsSubclassOf(typeof(OdDbSubentityOverrule));
		}

		private IntPtr SwigDirectorqueryX(IntPtr protocolClass)
		{
			return OdRxObject.getCPtr(this.queryX((OdRxClass)Teigha.Core.Helpers.odrxCreateObjectInternal(protocolClass, false))).Handle;
		}

		private IntPtr SwigDirectorisA()
		{
			return OdRxClass.getCPtr(this.isA()).Handle;
		}

		private bool SwigDirectorisApplicable(IntPtr pOverruledSubject)
		{
			return this.isApplicable(Teigha.Core.Helpers.odrxCreateObjectInternal(pOverruledSubject, false));
		}

		private int SwigDirectordeleteSubentPaths(IntPtr pSubject, IntPtr paths)
		{
			return (int)this.deleteSubentPaths((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdDbFullSubentPathArray(paths, false));
		}

		private int SwigDirectoraddSubentPaths(IntPtr pSubject, IntPtr paths)
		{
			return (int)this.addSubentPaths((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdDbFullSubentPathArray(paths, false));
		}

		private int SwigDirectortransformSubentPathsBy(IntPtr pSubject, IntPtr paths, IntPtr xform)
		{
			return (int)this.transformSubentPathsBy((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdDbFullSubentPathArray(paths, false), new OdGeMatrix3d(xform, false));
		}

		private int SwigDirectorgetGripPointsAtSubentPath(IntPtr pSubject, IntPtr path, IntPtr grips, double curViewUnitSize, int gripSize, IntPtr curViewDir, uint bitflags)
		{
			return (int)this.getGripPointsAtSubentPath((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdDbFullSubentPath(path, false), new OdDbGripDataPtrArray(grips, false), curViewUnitSize, gripSize, new OdGeVector3d(curViewDir, false), bitflags);
		}

		private int SwigDirectormoveGripPointsAtSubentPaths(IntPtr pSubject, IntPtr paths, IntPtr gripAppData, IntPtr offset, uint bitflags)
		{
			return (int)this.moveGripPointsAtSubentPaths((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdDbFullSubentPathArray(paths, false), new OdDbVoidPtrArray(gripAppData, false), new OdGeVector3d(offset, false), bitflags);
		}

		private int SwigDirectorgetSubentPathsAtGsMarker__SWIG_0(IntPtr pSubject, int type, IntPtr gsMark, IntPtr pickPoint, IntPtr viewXform, IntPtr subentPaths, IntPtr pEntAndInsertStack)
		{
			return (int)this.getSubentPathsAtGsMarker((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), (SubentType)type, gsMark, new OdGePoint3d(pickPoint, false), new OdGeMatrix3d(viewXform, false), new OdDbFullSubentPathArray(subentPaths, false), new OdDbObjectIdArray(pEntAndInsertStack, false));
		}

		private int SwigDirectorgetSubentPathsAtGsMarker__SWIG_1(IntPtr pSubject, int type, IntPtr gsMark, IntPtr pickPoint, IntPtr viewXform, IntPtr subentPaths)
		{
			return (int)this.getSubentPathsAtGsMarker((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), (SubentType)type, gsMark, new OdGePoint3d(pickPoint, false), new OdGeMatrix3d(viewXform, false), new OdDbFullSubentPathArray(subentPaths, false));
		}

		private int SwigDirectorgetGsMarkersAtSubentPath(IntPtr pSubject, IntPtr subPath, IntPtr gsMarkers)
		{
			return (int)this.getGsMarkersAtSubentPath((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdDbFullSubentPath(subPath, false), new SWIGTYPE_p_OdGsMarkerArray(gsMarkers, false));
		}

		private IntPtr SwigDirectorsubentPtr(IntPtr pSubject, IntPtr id)
		{
			return OdDbEntity.getCPtr(this.subentPtr((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdDbFullSubentPath(id, false))).Handle;
		}

		private int SwigDirectorgetCompoundObjectTransform(IntPtr pSubject, IntPtr xMat)
		{
			return (int)this.getCompoundObjectTransform((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdGeMatrix3d(xMat, false));
		}

		private int SwigDirectorgetSubentPathGeomExtents(IntPtr pSubject, IntPtr path, IntPtr extents)
		{
			return (int)this.getSubentPathGeomExtents((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdDbFullSubentPath(path, false), new OdGeExtents3d(extents, false));
		}

		private void SwigDirectorsubentGripStatus(IntPtr pSubject, int status, IntPtr subentity)
		{
			this.subentGripStatus((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), (GripStat)status, new OdDbFullSubentPath(subentity, false));
		}

		private int SwigDirectorgetSubentClassId(IntPtr pSubject, IntPtr path, IntPtr clsId)
		{
			return (int)this.getSubentClassId((OdDbEntity)Teigha.Core.Helpers.odrxCreateObjectInternal(pSubject, false), new OdDbFullSubentPath(path, false), clsId);
		}

		private object locker = new object();

		private HandleRef swigCPtr;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_0 swigDelegate0;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_1 swigDelegate1;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_2 swigDelegate2;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_3 swigDelegate3;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_4 swigDelegate4;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_5 swigDelegate5;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_6 swigDelegate6;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_7 swigDelegate7;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_8 swigDelegate8;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_9 swigDelegate9;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_10 swigDelegate10;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_11 swigDelegate11;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_12 swigDelegate12;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_13 swigDelegate13;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_14 swigDelegate14;

		private OdDbSubentityOverrule.SwigDelegateOdDbSubentityOverrule_15 swigDelegate15;

		private static Type[] swigMethodTypes0 = new Type[]
		{
			typeof(OdRxClass)
		};

		private static Type[] swigMethodTypes1 = new Type[0];

		private static Type[] swigMethodTypes2 = new Type[]
		{
			typeof(OdRxObject)
		};

		private static Type[] swigMethodTypes3 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdDbFullSubentPathArray)
		};

		private static Type[] swigMethodTypes4 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdDbFullSubentPathArray)
		};

		private static Type[] swigMethodTypes5 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdDbFullSubentPathArray),
			typeof(OdGeMatrix3d)
		};

		private static Type[] swigMethodTypes6 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdDbFullSubentPath),
			typeof(OdDbGripDataPtrArray),
			typeof(double),
			typeof(int),
			typeof(OdGeVector3d),
			typeof(uint)
		};

		private static Type[] swigMethodTypes7 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdDbFullSubentPathArray),
			typeof(OdDbVoidPtrArray),
			typeof(OdGeVector3d),
			typeof(uint)
		};

		private static Type[] swigMethodTypes8 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(SubentType),
			typeof(IntPtr),
			typeof(OdGePoint3d),
			typeof(OdGeMatrix3d),
			typeof(OdDbFullSubentPathArray),
			typeof(OdDbObjectIdArray)
		};

		private static Type[] swigMethodTypes9 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(SubentType),
			typeof(IntPtr),
			typeof(OdGePoint3d),
			typeof(OdGeMatrix3d),
			typeof(OdDbFullSubentPathArray)
		};

		private static Type[] swigMethodTypes10 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdDbFullSubentPath),
			typeof(SWIGTYPE_p_OdGsMarkerArray)
		};

		private static Type[] swigMethodTypes11 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdDbFullSubentPath)
		};

		private static Type[] swigMethodTypes12 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdGeMatrix3d)
		};

		private static Type[] swigMethodTypes13 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdDbFullSubentPath),
			typeof(OdGeExtents3d)
		};

		private static Type[] swigMethodTypes14 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(GripStat),
			typeof(OdDbFullSubentPath)
		};

		private static Type[] swigMethodTypes15 = new Type[]
		{
			typeof(OdDbEntity),
			typeof(OdDbFullSubentPath),
			typeof(IntPtr)
		};

		public delegate IntPtr SwigDelegateOdDbSubentityOverrule_0(IntPtr protocolClass);

		public delegate IntPtr SwigDelegateOdDbSubentityOverrule_1();

		public delegate bool SwigDelegateOdDbSubentityOverrule_2(IntPtr pOverruledSubject);

		public delegate int SwigDelegateOdDbSubentityOverrule_3(IntPtr pSubject, IntPtr paths);

		public delegate int SwigDelegateOdDbSubentityOverrule_4(IntPtr pSubject, IntPtr paths);

		public delegate int SwigDelegateOdDbSubentityOverrule_5(IntPtr pSubject, IntPtr paths, IntPtr xform);

		public delegate int SwigDelegateOdDbSubentityOverrule_6(IntPtr pSubject, IntPtr path, IntPtr grips, double curViewUnitSize, int gripSize, IntPtr curViewDir, uint bitflags);

		public delegate int SwigDelegateOdDbSubentityOverrule_7(IntPtr pSubject, IntPtr paths, IntPtr gripAppData, IntPtr offset, uint bitflags);

		public delegate int SwigDelegateOdDbSubentityOverrule_8(IntPtr pSubject, int type, IntPtr gsMark, IntPtr pickPoint, IntPtr viewXform, IntPtr subentPaths, IntPtr pEntAndInsertStack);

		public delegate int SwigDelegateOdDbSubentityOverrule_9(IntPtr pSubject, int type, IntPtr gsMark, IntPtr pickPoint, IntPtr viewXform, IntPtr subentPaths);

		public delegate int SwigDelegateOdDbSubentityOverrule_10(IntPtr pSubject, IntPtr subPath, IntPtr gsMarkers);

		public delegate IntPtr SwigDelegateOdDbSubentityOverrule_11(IntPtr pSubject, IntPtr id);

		public delegate int SwigDelegateOdDbSubentityOverrule_12(IntPtr pSubject, IntPtr xMat);

		public delegate int SwigDelegateOdDbSubentityOverrule_13(IntPtr pSubject, IntPtr path, IntPtr extents);

		public delegate void SwigDelegateOdDbSubentityOverrule_14(IntPtr pSubject, int status, IntPtr subentity);

		public delegate int SwigDelegateOdDbSubentityOverrule_15(IntPtr pSubject, IntPtr path, IntPtr clsId);
	}
}
